'''
正则表达式匹配

什么是正则表达式？
正则表达式是一种用于匹配字符串的工具，它可以用来检查一个字符串是否符合某种模式。
正则表达式由一些特殊字符和普通字符组成，这些字符可以用来描述字符串的特征。
正则表达式的主要作用如下：
1，字符串匹配：正则表达式可以用来检查一个字符串是否符合某种模式，
例如检查一个字符串是否是一个有效的电子邮件地址、电话号码、日期等。
2，字符串替换：正则表达式可以用来替换一个字符串中的某些部分，
例如将一个字符串中的所有数字替换为另一个数字。
3，字符串分割：正则表达式可以用来分割一个字符串，
例如将一个字符串按照空格分割成多个单词。
4，字符串提取：正则表达式可以用来提取一个字符串中的某些部分，
例如从一个字符串中提取出所有的数字。


正则表达式的语法
正则表达式的语法比较复杂，但是它的语法规则是固定的，
无论你使用哪种编程语言，都可以使用正则表达式。

正则表达式的语法规则如下：
1，普通字符：普通字符就是普通的字符，例如a、b、c、1、2、3等。
2，元字符：元字符是特殊的字符，它们有特殊的含义，例如\d表示数字，\w表示字母、数字、下划线，\s表示空格等。
3，限定符：限定符用于指定一个字符或一个字符类的出现次数，例如\d{3}表示数字出现3次。
4，字符类：字符类用于指定一个字符集合，例如[a-z]表示小写字母，[0-9]表示数字。
5，逻辑运算符：逻辑运算符用于连接多个正则表达式，例如|表示或，&表示与。
6，分组：分组用于将多个字符或字符类组合成一个整体，例如(abc)表示abc。
7，转义字符：转义字符用于转义特殊字符，例如\d表示数字，\d表示\d。
8，锚点：锚点用于指定一个位置，例如^表示字符串的开头，$表示字符串的结尾。
9，重复：重复用于指定一个字符或字符类的出现次数，例如\d+表示数字出现1次或多次。
10，非贪婪匹配：非贪婪匹配用于指定一个字符或字符类的出现次数，例如\d+?表示数字出现1次或多次。
11，反向引用：反向引用用于引用前面的分组，例如(abc)\1表示abc出现2次。
12，预定义类：预定义类用于指定一个字符集合，例如\d表示数字，\w表示字母、数字、下划线。


'''

import re

# 匹配字符串中的所有数字
pattern = r'\d+'  # 正则表达式模式，匹配一个或多个数字
text = "Hello, 123 world! 456"  # 要匹配的字符串
matches = re.findall(pattern, text)  # 使用findall方法查找所有匹配的数字
print(matches)  # 输出：['123', '456']


# 替换字符串中的所有数字
pattern = r'\d+'  # 正则表达式模式，匹配一个或多个数字
text = "Hello, 123 world! 456"  # 要匹配的字符串
new_text = re.sub(pattern, 'X', text)  # 使用sub方法替换所有匹配的数字，替换为X